#ifndef UTypesH
#define UTypesH

#include <boost/shared_ptr.hpp>
#include "Controls/UControls.h"
#include <vector>

typedef unsigned char uint8;
typedef signed char int8;

typedef unsigned short uint16;
typedef signed short int16;

typedef unsigned long int uint32;
typedef signed long int int32;

typedef unsigned int uint;

typedef unsigned long long int uint64;
typedef long long int int64;

struct TRectangle
{
	int Left,Top,Right,Bottom;
	TRectangle(int left, int top, int right, int bottom)
		: Left(left), Top(top), Right(right), Bottom(bottom) {};
	TRectangle() {};
};

struct TPoint
{
	int x,y;
	TPoint(int X, int Y)
		: x(X), y(Y) {};
	TPoint() {};
};

class TBuilding;
class TBuildingType;
class TGameState;
class TGLFontObj;
class TGUI;
class TGUIBuilding;
class TGUITerrain;
class TIniFile;
class TNetProt;
class TPopUpMenu;
class TUnitOrBuilding;
class TUnitOrBuildingType;
class TUnitType;
class TWindowManager;
class TWindowThemer;

class TTerrain;
class TCursorState;
class TSelectCursor;
class TDragSelectCursor;
class TBuildBuildingCursor;

class TCustomWindow;
class TDockable;
class TLeafWindow;
class TContainerWindow;
class TControlContainer;
class TControlContainerWindow;
class TNonSpaceFillingContainerWindow;


typedef boost::shared_ptr<TGameState> TGameStateRef;typedef boost::shared_ptr<const TGameState> TGameStateRefConst;

typedef boost::shared_ptr<TTerrain> TTerrainRef;
typedef boost::shared_ptr<const TTerrain> TTerrainRefConst;

typedef std::vector<TBuildingType*> TBuildingTypeVector;
typedef std::vector<TUnitType*>	 TUnitTypeVector;

//Window type Constants
#define WT_None 0  //Windows with this Type won't be docked standard
#define WT_Map	1


#endif
